package model

import "gorm.io/gorm"

// SystemConfig 系统配置
type SystemConfig struct {
	gorm.Model
	Key         string `gorm:"type:varchar(50);uniqueIndex;not null" json:"key"` // 配置键
	Value       string `gorm:"type:text" json:"value"`                           // 配置值
	Name        string `gorm:"type:varchar(50);not null" json:"name"`            // 配置名称
	Description string `gorm:"type:varchar(200)" json:"description"`             // 配置描述
	Group       string `gorm:"type:varchar(50);default:'system'" json:"group"`   // 配置分组
	Type        string `gorm:"type:varchar(20);default:'string'" json:"type"`    // 值类型：string/number/boolean/json
	Status      int    `gorm:"type:tinyint;default:1" json:"status"`             // 状态：1启用，2禁用
	Sort        int    `gorm:"type:int;default:0" json:"sort"`                   // 排序
}

// OperationLog 操作日志
type OperationLog struct {
	gorm.Model
	UserID      uint   `gorm:"not null" json:"user_id"`              // 用户ID
	Username    string `gorm:"type:varchar(50)" json:"username"`     // 用户名
	Module      string `gorm:"type:varchar(50)" json:"module"`       // 模块名
	Action      string `gorm:"type:varchar(100)" json:"action"`      // 操作类型，如"查询库存列表","创建入库单"等
	Method      string `gorm:"type:varchar(20)" json:"method"`       // 请求方法
	Path        string `gorm:"type:varchar(200)" json:"path"`        // 请求路径
	IP          string `gorm:"type:varchar(50)" json:"ip"`           // IP地址
	TargetName  string `gorm:"type:varchar(100)" json:"target_name"` // 操作目标对象名称
	RequestData string `gorm:"type:text" json:"request_data"`        // 请求数据
	Response    string `gorm:"type:text" json:"response"`            // 响应数据
	Status      int    `gorm:"type:int" json:"status"`               // 响应状态码
	Error       string `gorm:"type:text" json:"error"`               // 错误信息
	Duration    int64  `gorm:"type:int" json:"duration"`             // 执行时间（毫秒）
}

// TableName 指定OperationLog的表名
func (OperationLog) TableName() string {
	return "operation_logs"
}
